/**
 * 
 */
package br.com.consultsystems.negocio.impl.cadastro;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import br.com.consultsystems.dominio.cadastro.Fornecedor;
import br.com.consultsystems.negocio.spec.cadastro.FornecedorNegocio;
import br.com.consultsystems.persistencia.spec.cadastro.FornecedorPersistencia;

/**
 * @author Moralles
 *
 */
@Stateless(name = "fornecedorNegocio")
public class FornecedorNegocioImpl implements FornecedorNegocio {

	@EJB
	private FornecedorPersistencia fornecedorPersistencia;
	
	@Override
	public Fornecedor merge(Fornecedor t) throws Exception {

		if(t.getId() == null || t.getId() <= 0) {
			t.setDataCadastro(new Date());
		}
		return fornecedorPersistencia.merge(t);
	}

	@Override
	public Fornecedor retrieve(Long id) throws Exception {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void remove(Fornecedor t) throws Exception {
		t = this.merge(t);
		fornecedorPersistencia.remove(t);
	}

	@Override
	public void refresh(Fornecedor t) throws Exception {
		fornecedorPersistencia.refresh(t);
	}

	@Override
	public List<Fornecedor> retrieveAll() throws Exception {
		return fornecedorPersistencia.retrieveAll();
	}

	@Override
	public List<Fornecedor> retrieveByFilter(String fantasia, String razaoSocial) throws Exception {
		
		if(fantasia != null && !fantasia.isEmpty()) {
			return fornecedorPersistencia.retrieveByFornecedor(fantasia);			
		} else if(razaoSocial != null && !razaoSocial.isEmpty()) {
			return fornecedorPersistencia.retrieveByGrupo(razaoSocial);
		} else {
			 return new ArrayList<Fornecedor>();
		}
		
	}

	
}
